CREATE TABLE [dbo].[tb_TitulosDelAgente]
(
[idTitulo] [int] NOT NULL IDENTITY(1, 1),
[Agente] [int] NOT NULL,
[Titulo] [int] NOT NULL,
[Promedio] [float] NULL CONSTRAINT [DF_tb_TitulosDelAgente_Promedio] DEFAULT ((0)),
[DuracionCarrera] [int] NULL,
[Registrado] [varchar] (1) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[NumeroRegistro] [int] NULL,
[FechaRegistro] [datetime] NULL,
[Asiento] [varchar] (1) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL CONSTRAINT [DF_tb_TitulosDelAgente_EsDeLaProvincia] DEFAULT ('S'),
[FechaEgreso] [datetime] NOT NULL,
[EntidadOtorganteDeTitulo] [int] NULL,
[GrupoIncumbencia] [int] NOT NULL,
[FechaDeCarga9] [datetime] NULL CONSTRAINT [DF_tb_TitulosDelAgente_FechaDeCarga9] DEFAULT (getdate()),
[FechaPresentacion] [datetime] NULL,
[NTUser] [int] NULL CONSTRAINT [DF_tb_TitulosDelAgente_NTUser] DEFAULT ([dbo].[sp_usuario](isnull(suser_sname(),(34653720)))),
[FechaCarga] [datetime] NULL CONSTRAINT [DF_tb_TitulosDelAgente_FechaCarga] DEFAULT (getdate())
) ON [PRIMARY]
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO
CREATE TRIGGER [dbo].[AsignarFechaDefaultTitulosDelAgente] ON [dbo].[tb_TitulosDelAgente] 
FOR INSERT, UPDATE
AS
BEGIN
--AsignarFechaDefault
SET NOCOUNT ON

DECLARE @FechaPresentacion as datetime
DECLARE @id as int
DECLARE @idta as int

SELECT @FechaPresentacion = FechaPresentacion,@id=idTitulo  FROM INSERTED

	IF (@@ROWCOUNT=1) 
	 BEGIN
	    IF @FechaPresentacion IS NULL SELECT @FechaPresentacion= dbo.FECHA_PRESENTACION_DEFAULT ()
	    UPDATE tb_TitulosDelAgente SET FechaPresentacion = @FechaPresentacion WHERE idTitulo=@id
	
	--si se actualiza la fechapresentaciondefault , el update genera un triger que agrega una fila repetida en la tabla tb_titulosdelagenteAUD , con las dos lineas que siguen borro esa fila repetida
	    select @idta=max(idtitulo) FROM  dbo.tb_TitulosDelAgenteAUD
                 delete dbo.tb_TitulosDelAgenteAUD where idtitulo=@idta

	 END

END



GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO
CREATE TRIGGER [dbo].[Auditar_TitulosDelAgenteAUD] ON [dbo].[tb_TitulosDelAgente] 
FOR  DELETE
AS
SET NOCOUNT ON
BEGIN
	SELECT * FROM DELETED
	IF (@@ROWCOUNT=1) 
	 BEGIN
		   insert tb_TitulosdelAgenteAUD SELECT Agente,Titulo,Promedio,DuracionCarrera,Registrado,NumeroRegistro,FechaRegistro,Asiento,FechaEgreso,EntidadOtorganteDeTitulo,	GrupoIncumbencia,FechaDeCarga9,FechaPresentacion,NTUser,FechaCarga,  getdate() , SYSTEM_USER , 'DEL'
   		   FROM DELETED
  
	 END
END
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO
CREATE TRIGGER [dbo].[Auditar_TitulosDelAgenteINS_UPD] ON [dbo].[tb_TitulosDelAgente] 
FOR INSERT,UPDATE
AS
SET NOCOUNT ON
BEGIN
	SELECT * FROM INSERTED
	IF (@@ROWCOUNT=1) 
	 BEGIN
                             insert tb_TitulosdelAgenteAUD SELECT Agente,Titulo,Promedio,DuracionCarrera,Registrado,NumeroRegistro,FechaRegistro,Asiento,FechaEgreso,EntidadOtorganteDeTitulo,	GrupoIncumbencia,FechaDeCarga9,FechaPresentacion,NTUser,FechaCarga,  getdate() , SYSTEM_USER , 'INS'
   		   FROM inserted
		  
	 END
              
END



GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
CREATE TRIGGER [dbo].[NroRegistro] ON [dbo].[tb_TitulosDelAgente] 
FOR INSERT 
AS
SET NOCOUNT ON
DECLARE @NroInserted INT 

DECLARE @NroUltimo INT
DECLARE @IDRegistro INT
DECLARE @NTUSER INT

Select @IDRegistro= IdTitulo, @NroInserted = NumeroRegistro,@NTUSER=NTUser  FROM Inserted 

IF (@NroInserted IS NULL) and (@NTUSER IN (34653832, 34653698, 34653981, 34653701))
	BEGIN
	SET @NroUltimo = dbo.fnObtenerUltNumeroRegistroTitulo()
	UPDATE tb_TitulosdelAgente SET NumeroRegistro=@NroUltimo WHERE IdTitulo = @IDRegistro
	END



GO
ALTER TABLE [dbo].[tb_TitulosDelAgente] ADD CONSTRAINT [PK_tb_TitulosDelAgente] PRIMARY KEY CLUSTERED  ([idTitulo]) WITH (FILLFACTOR=100) ON [PRIMARY]
GO
CREATE NONCLUSTERED INDEX [idx_AgentesTitulosDelAgente] ON [dbo].[tb_TitulosDelAgente] ([Agente]) WITH (FILLFACTOR=100) ON [PRIMARY]
GO
ALTER TABLE [dbo].[tb_TitulosDelAgente] WITH NOCHECK ADD CONSTRAINT [FK_tb_TitulosDelAgente_tb_Agentes] FOREIGN KEY ([Agente]) REFERENCES [dbo].[tb_Agentes] ([idAgente])
GO
ALTER TABLE [dbo].[tb_TitulosDelAgente] ADD CONSTRAINT [FK_tb_TitulosDelAgente_tb_EntidadOtorganteDeTitulos] FOREIGN KEY ([EntidadOtorganteDeTitulo]) REFERENCES [dbo].[tb_EntidadOtorganteDeTitulos] ([idEntidad])
GO
ALTER TABLE [dbo].[tb_TitulosDelAgente] WITH NOCHECK ADD CONSTRAINT [FK_tb_TitulosDelAgente_tb_GruposDeIncumbencias] FOREIGN KEY ([GrupoIncumbencia]) REFERENCES [dbo].[tb_GruposDeIncumbencias] ([idGrupoIncumbencia])
GO
ALTER TABLE [dbo].[tb_TitulosDelAgente] WITH NOCHECK ADD CONSTRAINT [FK_tb_TitulosDelAgente_tb_Titulos] FOREIGN KEY ([Titulo]) REFERENCES [dbo].[tb_Titulos] ([idTitulo])
GO
